1. Field of the Invention
The present invention relates generally to mesochronous clock architectures and, more specifically, to a mesochronous clock architecture for use in a large-scale computing system to reduce latency and buffer requirements involved with data transfers among computing nodes.
2. Discussion of Related Art
Synchronous clock architectures use a clock signal to control data transfers among subsystems or circuits. These architectures require the clock signals to have identical frequency and to be aligned in phase (e.g., rising edges occurring at precisely the same instant in time). They are relatively simple to implement at low frequencies and particularly well-suited for smaller systems where it is feasible and cost-effective to satisfy the necessary clocking requirements.
Asynchronous clock architectures have different clocking domains in different subsystems or circuits. Each clock domain may have a different frequency and the phase relationship among domains is unknown. These systems have relatively relaxed system requirements and thus have been used in larger systems where it has been impractical to use synchronous designs. Unfortunately, these designs typically require some form of synchronizer circuit at the boundaries of clock domains, and these add complexity and significant latency to data transfers between subsystems having different clock domains.
Mesochronous clock architectures have different clocking domains in different subsystems or circuits. The different domains, however, all have the same clock frequency, though there is no fixed phase relationship among the domains.
Typically large scale computing systems or clusters have multiple printed circuit boards (PCBs) or modules. Each module often has its own clock, or clock domain. Data transfer methods among processors in different domains have involved significant data path latency and significant buffer requirements.
Some digital systems employ serial/deserializer (SERDES) logic to implement data pipes among various nodes in the system. Typically, the SERDES lanes are designed to have higher bandwidth than needed by the receiver logic in the system to receive data on such links. This is done so that the SERDES logic may transmit special control characters, to tag data as a start of a new data sequence, during normal operation of the system. Thus, each SERDES logic system typically has something known as an “elastic buffer” to act as a synchronizer between the receiver clock and the core clock. Elasticity buffers add latency to the data transfer. Moreover, word synchronizing characters are sent periodically as part of a training sequence at the expense of what could otherwise be used as normal operation bandwidth.